memcached安装

1.memcached安装

1
[root@memcached ~]# yum install -y epel-release
1
[root@memcached ~]# yum install -y libevent memcached libmemcached

        启动 /etc/init.d/memcached start

1
2
[root@memcached ~]# service memcached start
正在启动 memcached: [确定]
1
[root@memcached ~]# ps aux |grep memcached

01

        memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid

        相关的参数在/etc/init.d/memcached和/etc/sysconfig/memcached中定义

1
[root@memcached ~]# vim /etc/sysconfig/memcached

02

        修改为

03

        将内存改为 128m

        重启服务

1
2
3
[root@memcached ~]# /etc/init.d/memcached restart
停止 memcached: [确定]
正在启动 memcached: [确定]

memcached 启动参数

  • -d选项是启动一个守护进程
  • -m是分配给Memcache使用的内存数量,单位是MB,这里是200MB
  • -u是运行Memcache的用户,如果当前为 root 的话,需要使用此参数指定用户。
  • -l是监听的服务器IP地址
  • -p是设置Memcache监听的端口,默认是11211
  • -c选项是最大运行的并发连接数,默认是1024
  • -P是设置保存Memcache的pid文件

查看 memcached 运行状态

1
[root@memcached ~]# memcached-tool 127.0.0.1:11211 stats

04

        或者

1
[root@memcached ~]# echo stats | nc 127.0.0.1:11211

        需要安装nc工具

1
[root@memcached ~]# yum install -y nc

05

        若安装libmemcached后,可以使用命令

        memstat –servers=127.0.0.1:11211 查看memcached服务状态

1
[root@memcached ~]# memstat --servers=127.0.0.1:11211

06

2.memcached 基本命令

memcached 命令行

1
[root@memcached ~]# telnet 127.0.0.1 11211

07

08

mamcached 语法规则

1
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n

        注:\r\n在windows下是Enter键

        a) 可以是”set”, “add”, “replace”。

        “set”表示按照相应的存储该数据,没有的时候增加,有的覆盖。

         “add”表示按照相应的添加该数据,但是如果该已经存在则会操作失败。

         “replace”表示按照相应的替换数据,但是如果该不存在则操作失败。

        b) 客户端需要保存数据的key。

        c) 是一个16位的无符号的整数(以十进制的方式表示)。

        该标志将和需要存储的数据一起存储,并在客户端get数据时返回。

        客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。

        d) 过期的时间。

        若为0表示存储的数据永远不过期(但可被服务器算法:LRU 等替换)。

        如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。

        e) 需要存储的字节数,当用户希望存储空数据时可以为0

        f) 需要存储的内容,输入完成后,最后客户端需要加上”\r\n”(直接点击Enter)作为”命令头”的结束标志。

memcached 数据示例

09

3.PHP 连接 memcached

        先安装php的memcache扩展

1
[root@memcached ~]# wget http://www.lishiming.net/data/attachment/forum/memcache-2.2.3.tgz
1
2
[root@memcached ~]# tar zxf memcache-2.2.3.tgz
[root@memcached ~]# cd memcache-2.2.3
1
[root@memcached memcache-2.2.3]# /usr/local/php/bin/phpize

10

1
[root@memcached memcache-2.2.3]# ./configure --with-php-config=/usr/local/php/bin/php-config
1
[root@memcached memcache-2.2.3]# make && make install

        安装完后会有类似这样的提示:

1
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

11

        把这个记住,然后修改php.ini

1
[root@memcached memcache-2.2.3]# vim /usr/local/php/etc/php.ini

        把 extension_dir = “./“ 修改为
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/“

12

        修改为

13

        并添加一行

1
extension = "memcache.so"

14

PHP 连接 memcached 检验

        检查模块是否添加正常

1
[root@memcached memcache-2.2.3]# /usr/local/php/bin/php -m | grep memcache

15

        模块中有 memcache 说明配置成功

        下载测试php脚本

1
[root@memcached memcache-2.2.3]# curl www.apelearn.com/study_v2/.memcache.txt > 1.php 2>/dev/null

        执行脚本

1
[root@memcached memcache-2.2.3]# /usr/local/php/bin/php 1.php

16

4.memcached 实现 session 共享

        本实例是在lamp/lnmp环境下实现

        编辑php.ini添加两行

1
[root@memcached ~]# vim /usr/local/php/etc/php.ini
1
2
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

17

        如果 session 服务器在远程这里输入远程的 IP 地址

        或者httpd.conf中对应的虚拟主机中添加

1
[root@memcached ~]# vim /usr/local/apache2/conf/httpd.conf
1
2
php_value session.save_handler "memcache"
php_value session.save_path "tcp://192.168.0.9:11211"

         或者php-fpm.conf对应的pool中添加

1
2
php_value[session.save_handler] = memcache
php_value[session.save_path] = " tcp://192.168.0.9:11211 "

memcached session测试

1
[root@memcached ~]# wget http://study.lishiming.net/.mem_se.txt
1
[root@memcached ~]# mv .mem_se.txt /usr/local/apache2/htdocs/session.php
1
[root@memcached ~]# curl localhost/session.php

18

        类似于1443702394

1443702394

i44nunao0g3o7vf2su0hnc5440

1
[root@memcached ~]# telnet 127.0.0.1 11211

19